//package com.imay.live.view.banner;
//
//import android.os.Handler;
//import android.os.Looper;
//import android.os.Message;
//
///**
// * 自动滑动
// */
//public class AutoPlayer {
//
//    /**
//     * 操作集合
//     */
//    public interface Playable {
//
//        public void playTo(int to);
//
//        public void playNext();
//
//        public void playPrevious();
//
//        public int getTotal();
//
//        public int getCurrent();
//    }
//
//    /**
//     * 枚举类型配置滑动方式
//     */
//    public enum PlayDirection {
//        to_left, to_right
//    }
//
//    /**
//     * 枚举类型配置过度方式
//     */
//    public enum PlayRecycleMode {
//        repeat_from_start, play_back
//    }
//
//    private PlayDirection mDirection = PlayDirection.to_right;
//    private PlayRecycleMode mPlayRecycleMode = PlayRecycleMode.repeat_from_start;
//    private int mTimeInterval = 5000;
//    private Playable mPlayable;
//
//
//    private boolean mSkipNext = false;
//    private int mTotal;
//    private boolean mPlaying = false;
//    private boolean mPaused = false;
//
//    public AutoPlayer(Playable playable) {
//        mPlayable = playable;
//    }
//
//    public void play() {
//        play(0, PlayDirection.to_right);
//    }
//
//    public void skipNext() {
//        mSkipNext = true;
//    }
//
//    Handler handler;
//
//    /**
//     * 滑动页数与滑动方式
//     *
//     * @param start
//     * @param direction
//     */
//    public void play(int start, PlayDirection direction) {
//        if (mPlaying)
//            return;
//        mTotal = mPlayable.getTotal();
//        if (mTotal <= 1) {
//            return;
//        }
//        if (start >= mTotal) {
//            start = 0;
//        }
//        mPlaying = true;
//        playTo(start);
//        resume();
//        if (handler == null) {
//            handler = new Handler(Looper.getMainLooper()) {
//                @Override
//                public void handleMessage(Message msg) {
//                    super.handleMessage(msg);
//                    if (msg.what == what) {
//                        if (!mPaused) {
//                            playNextFrame();
//                        }
//                        if (mPlaying) {
//                            handler.removeCallbacksAndMessages(null);
//                            sendEmptyMessageDelayed(what, mTimeInterval);
//                        }
//                    }
//                }
//            };
//        }
//        handler.removeCallbacksAndMessages(null);
//        handler.sendEmptyMessageDelayed(what, mTimeInterval);
//    }
//
//    final int what = 0;
//
//
//    public void stop() {
//        mPlaying = false;
//        mPaused = true;
//        if (handler != null) {
//            handler.removeCallbacksAndMessages(what);
//        }
//
//    }
//
//    public AutoPlayer setTimeInterval(int timeInterval) {
//        mTimeInterval = timeInterval;
//        return this;
//    }
//
//    /**
//     * 设置过度模式
//     *
//     * @param playRecycleMode
//     * @return
//     */
//    public AutoPlayer setPlayRecycleMode(PlayRecycleMode playRecycleMode) {
//        mPlayRecycleMode = playRecycleMode;
//        return this;
//    }
//
//    private void playNextFrame() {
//        if (mSkipNext) {
//            mSkipNext = false;
//            return;
//        }
//        int current = mPlayable.getCurrent();
//        if (mDirection == PlayDirection.to_right) {
//            if (current == mTotal - 1) {
//                if (mPlayRecycleMode == PlayRecycleMode.play_back) {
//                    mDirection = PlayDirection.to_left;
//                    playNextFrame();
//                } else {
//
//                    playTo(0);
//                }
//            } else {
//                playNext();
//            }
//        } else {
//            if (current == 0) {
//                if (mPlayRecycleMode == PlayRecycleMode.play_back) {
//                    mDirection = PlayDirection.to_right;
//                    playNextFrame();
//                } else {
//                    playTo(mTotal - 1);
//                }
//            } else {
//                playPrevious();
//            }
//        }
//    }
//
//    public void pause() {
//        mPaused = true;
//    }
//
//    public void resume() {
//        mPaused = false;
//    }
//
//    private void playTo(int to) {
//        mPlayable.playTo(to);
//    }
//
//    private void playNext() {
//        mPlayable.playNext();
//    }
//
//    private void playPrevious() {
//        mPlayable.playPrevious();
//    }
//}
